import './jquery-3.2.1.min.js'
import CosCloud from './cos-js-sdk-v4.js'
import './crypto.js'
import $ from 'jquery'
/**
 * Created by admin on 2017/9/28.
 */
//cos-js-sdk-v4   腾讯云上传部分
  //TODO 以下几个值请确保填上再调用示例里的sdk方法
  //具体可以到https://console.qcloud.com/cos 进行查看

var bucket = 'public';
var appid = '1254105675';
var sid = 'AKIDsaBgDcr21tajrpOCfzvlU1NXYN6nlh6K';
var skey = 'LbgZIqCNOFvSnxwkV9dEesDRU1SinhaP';
var region = 'cd';
var source_url='';
//TODO 以上几个值请确保填上再调用示例里的sdk方法
var timestamp = Date.parse(new Date());
var getCookie=function(c_name) {             //取出cookie
  if (document.cookie.length>0)
  {
    var  c_start=document.cookie.indexOf(c_name + "=")
    if (c_start!=-1)
    {
      c_start=c_start + c_name.length+1
      var c_end=document.cookie.indexOf(";",c_start)
      if (c_end==-1) c_end=document.cookie.length
      return unescape(document.cookie.substring(c_start,c_end))
    }
  }
  return ""
};
var myFolder = '/order'+getCookie('uid')+"_"+timestamp+'/';//需要操作的目录

//初始化逻辑
//特别注意: JS-SDK使用之前请先到console.qcloud.com/cos 对相应的Bucket进行跨域设置
var cos = new CosCloud({
  appid: appid, // APPID 必填参数
  bucket: bucket, // bucketName 必填参数
  region: region, // 地域信息 必填参数 华南地区填gz 华东填sh 华北填tj
  getAppSign: function (callback) {//获取签名 必填参数

    // 方法一（推荐线上使用）：搭建鉴权服务器，构造请求参数获取签名，推荐实际线上业务使用，优点是安全性好，不会暴露自己的私钥
    // $.get('/v1/platform/signature/oss/public'+this.myFolder, callback);
    $.ajax({
      url:'/javaapi/signature/oss/uploadSignature/order/'+timestamp,
      beforeSend: function(request) {
        request.setRequestHeader("X-CDYR-Token", getCookie('token'));
      },
    }).done(function (data) {
      console.log(data)
      var sig = (new Function("return" + data))();
      console.log(sig)
      console.log(sig.body)
      console.log(sig.sc)
      callback(sig.body);
    });

    // 方法二（前端调试使用）：直接在浏览器前端计算签名，需要获取自己的accessKey和secretKey, 一般在调试阶段使用
    // var self = this;
    // var random = parseInt(Math.random() * Math.pow(2, 32));
    // var now = parseInt(Date.now() / 1000);
    // var e = now + 600; //签名过期时间为当前+600s
    // var path = ''; //多次签名这里填空
    // var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random + '&f=' + path + '&b=' + self.bucket;
    // var sha1Res = CryptoJS.HmacSHA1(str, skey); // 这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
    // var strWordArray = CryptoJS.enc.Utf8.parse(str);
    // var resWordArray = sha1Res.concat(strWordArray);
    // var res = resWordArray.toString(CryptoJS.enc.Base64);
    //
    // callback(res);

  },
  getAppSignOnce: function (callback) {//单次签名，参考上面的注释即可

    // 方法一（推荐线上使用）：搭建鉴权服务器，构造请求参数获取签名，推荐实际线上业务使用，优点是安全性好，不会暴露自己的私钥
    // $.get('../server/auth.php', {path: self.path}, callback);

    // 方法二（前端调试使用）：直接在浏览器前端计算签名，需要获取自己的accessKey和secretKey, 一般在调试阶段使用
    var self = this;
    var random = parseInt(Math.random() * Math.pow(2, 32));
    var now = parseInt(Date.now() / 1000);
    var e = 0; // 单次签名 expire==0
    var path = self.path;
    var str = 'a=' + self.appid + '&k=' + sid + '&e=' + e + '&t=' + now + '&r=' + random + '&f=' + path + '&b=' + self.bucket;
    var sha1Res = CryptoJS.HmacSHA1(str, skey); // 这里使用CryptoJS计算sha1值，你也可以用其他开源库或自己实现
    var strWordArray = CryptoJS.enc.Utf8.parse(str);
    var resWordArray = sha1Res.concat(strWordArray);
    var res = resWordArray.toString(CryptoJS.enc.Base64);

    callback(res);

  }
});

var successCallBack = function (result) {
  console.log('request success.');
  console.log(JSON.stringify(result));
  let data=JSON.stringify(result)
  let obj=(new Function("return" + data))();
  console.log(obj)
  return source_url=obj.data.source_url
};

var errorCallBack = function (result) {
  result = result || {};
  console.log('request error:', result && result.message);
  console.log(result.responseText || 'error');
};

var progressCallBack = function (curr, sha1) {
  var sha1CheckProgress = ((sha1 * 100).toFixed(2) || 100) + '%';
  var uploadProgress = ((curr || 0) * 100).toFixed(2) + '%';
  var msg = 'upload progress:' + uploadProgress + '; sha1 check:' + sha1CheckProgress + '.';
  console.log(msg);
  console.log(msg);
};
var lastTaskId;
var taskReady = function (taskId) {
  lastTaskId = taskId;
};
export {
  source_url,bucket,appid,sid,skey,region,myFolder,cos,errorCallBack,progressCallBack,taskReady
}


